function Asynchronous(div, func) {
    this._xmlhttp = new FactoryXMLHttpRequest();
    this._div = div;
    this._func = func;
    this._array = null;
}

function Asynchronous_call(url) {
    var instance = this;
    this._xmlhttp.open('GET', url+'&ms='+(new Date().getTime()), true);
    this._xmlhttp.onreadystatechange = function () {
        switch(instance._xmlhttp.readyState) {
            case 1:
                instance.loading();
                break;
            case 2:
                instance.loaded();
                break;
            case 3:
                instance.interactive();
                break;
            case 4:
                instance.complete(instance._xmlhttp.status, instance._xmlhttp.statusText, 
                                  instance._xmlhttp.responseText, instance._xmlhttp.responseXML);
                break;
        }
    }
    this._xmlhttp.send(null);
}

function Asynchronous_loading() {
}

function Asynchronous_loaded() {
}

function Asynchronous_interactive() {
}

function Asynchronous_complete(status, statusText, responseText, responseHTML) {
}

function Asynchronous_getArray() {
    return this._array;
}

Asynchronous.prototype.loading = Asynchronous_loading;
Asynchronous.prototype.loaded = Asynchronous_loaded;
Asynchronous.prototype.interactive = Asynchronous_interactive;
Asynchronous.prototype.complete = Asynchronous_complete;
Asynchronous.prototype.getArray = Asynchronous_getArray;

Asynchronous.prototype.call = Asynchronous_call;
